#!/usr/bin/env python3
# -*- coding: utf-8 -*-
__author__ = '汤小洋'


# 定义一个Person类
class Person(object):

    def __init__(self, name, age):
        print('__init__')
        self.name = name
        self.age = age

    # 将对象转换为字符串时调用，类似于Java中的toString()
    def __str__(self):
        return 'Person [name=%s , age=%d]' % (self.name, self.age)

    # 在对象使用len()函数时调用
    def __len__(self):
        return len(self.name)

    # 在对象使用repr()函数时调用
    def __repr__(self):
        return 'Hello'

    # 将对象转换为布尔时调用
    def __bool__(self):
        return self.age > 18

    # 在对象进行大于比较时调用，该方法的返回值将会作为比较的结果
    def __gt__(self, other):  # 参数self表示当前对象，参数other表示和当前对象比较的对象
        return self.age > other.age

    # object.__lt__(self, other) 小于 <
    # object.__le__(self, other) 小于等于 <=
    # object.__eq__(self, other) 等于 ==
    # object.__ne__(self, other) 不等于 !=
    # object.__gt__(self, other) 大于 >
    # object.__ge__(self, other) 大于等于 >=


# 创建类的实例
p1 = Person('唐伯虎', 15)
p2 = Person('秋香', 28)

# 当输出对象时实际上就是将对象转换为字符串
print(p1)  # 默认结果为 <__main__.Person object at 0x10205ad68>

print(len(p1))

print(repr(p1))

print(bool(p1))

if p1:
    print(p1.name, '已成年')
else:
    print(p1.name, '未成年')

print(p1 > p2)
